<?  
 /** 
* @generator Le Classificateur 2.01 beta 
* @author Yann Boisclair-Roy 
* @date 2008/03/24
* @desc Classe qui contrôle les données de la table usagers
*/  
 
 class Usagers {

 	/**
 	* @desc Flag qui détermine si la recherche devra se faire avec des LIKE '%%' ou des " = "
 	* @var boolean
 	*/
 	var $rechercheExact = true; 
 
 	/**
 	* @desc Objet de connexion à la base de données
 	* @var Bd
 	*/
 	var $oBd; 
 	/**
 	* @desc Variable qui contient un bout de SQL qui déterminera l'ordre selon les voeux de l'usager
 	* @var string
 	*/
 	var $ordre; 
 	/**
 	* @desc Variable qui contient un bout de SQL qui déterminera la limite selon les voeux de l'usager
 	* @var String
 	*/
 	var $limite; 
 	/**
 	* @desc Variable qui contient un Array des résultats provenant de la requête SQL par GetInfos
 	* @var Array
 	*/
 	var $resultat; 
 	/**
 	* @desc Variables équivalente au champs noUsager de la table usagers
 	* @var int
 	*/
 	 var $noUsager;
 
 	/**
 	* @desc Variables équivalente au champs nom de la table usagers
 	* @var String
 	*/
 	 var $nom;
 
 	/**
 	* @desc Variables équivalente au champs courriel de la table usagers
 	* @var String
 	*/
 	 var $courriel;
 
 	/**
 	* @desc Variables équivalente au champs password de la table usagers
 	* @var String
 	*/
 	 var $password;
 
 	/**
 	* @desc Variables équivalente au champs adresse de la table usagers
 	* @var String
 	*/
 	 var $adresse;
 
 	/**
 	* @desc Variables équivalente au champs codePostal de la table usagers
 	* @var String
 	*/
 	 var $codePostal;
 
 	/**
 	* @desc Variables équivalente au champs telephone de la table usagers
 	* @var String
 	*/
 	 var $telephone;
 
 	/**
 	* @desc Variables équivalente au champs age de la table usagers
 	* @var int
 	*/
 	 var $age = 0;
 
 	/**
 	* @desc Variables équivalente au champs typeSkieur de la table usagers
 	* @var int
 	*/
 	 var $typeSkieur = 0;
 
 	/**
 	* @desc Variables équivalente au champs date de la table usagers
 	* @var mixed
 	*/
 	 var $date;
 
 	/**
 	* @desc Variables équivalente au champs access de la table usagers
 	* @var int
 	*/
 	 var $access = 0;
 
 	/**
 	* @desc Variables équivalente au champs codeSecret de la table usagers
 	* @var String
 	*/
 	 var $codeSecret;
 

 	/**
 	* @desc Constructeur de la class usagers. Si à l'instenciation de la classe on lui donne un numéro de clé primaire, 
 	*  celle-ci instenciera la class avec toutes les infos dans la table usagers concernant cette clé primaire.
 	* @access public
 	* @param	Bd	oBd
 	* @param int noUsager
 	*/
 	 function Usagers ( $oBd, $noUsager = 0 ) { 
 	 	 $this->oBd = $oBd; 
  	 	 if( $noUsager > 0 ) {  
  	 	 	 $this->noUsager = $noUsager; 
  	 	 	 $this->getInfos(); 
  	 	 } 
 	 }  
 
   	/**
 	* @desc Fonction mutatrice du champ noUsager
 	* @access public
 	* @param intnoUsager
 	*/
	function setNoUsager ( $noUsager ) {
		$this->noUsager = intval( $noUsager );
	}


 	/**
 	* @desc Fonction accesseur du champ noUsager
 	* @access public
 	* @return int
 	*/
	 function getNoUsager (){
	 	 return stripslashes( noUsager);
	}


 	/**
 	* @desc Fonction mutatrice du champ nom
 	* @access public
 	* @param Stringnom
 	*/
	function setNom ( $nom ) {
		$this->nom = addslashes( $nom ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ nom
 	* @access public
 	* @return String
 	*/
	 function getNom (){
	 	 return stripslashes( nom);
	}


 	/**
 	* @desc Fonction mutatrice du champ courriel
 	* @access public
 	* @param Stringcourriel
 	*/
	function setCourriel ( $courriel ) {
		$this->courriel = addslashes( $courriel ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ courriel
 	* @access public
 	* @return String
 	*/
	 function getCourriel (){
	 	 return stripslashes( courriel);
	}


 	/**
 	* @desc Fonction mutatrice du champ password
 	* @access public
 	* @param Stringpassword
 	*/
	function setPassword ( $password ) {
		$this->password = addslashes( $password ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ password
 	* @access public
 	* @return String
 	*/
	 function getPassword (){
	 	 return stripslashes( password);
	}


 	/**
 	* @desc Fonction mutatrice du champ adresse
 	* @access public
 	* @param Stringadresse
 	*/
	function setAdresse ( $adresse ) {
		$this->adresse = addslashes( $adresse ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ adresse
 	* @access public
 	* @return String
 	*/
	 function getAdresse (){
	 	 return stripslashes( adresse);
	}


 	/**
 	* @desc Fonction mutatrice du champ codePostal
 	* @access public
 	* @param StringcodePostal
 	*/
	function setCodePostal ( $codePostal ) {
		$this->codePostal = addslashes( $codePostal ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ codePostal
 	* @access public
 	* @return String
 	*/
	 function getCodePostal (){
	 	 return stripslashes( codePostal);
	}


 	/**
 	* @desc Fonction mutatrice du champ telephone
 	* @access public
 	* @param Stringtelephone
 	*/
	function setTelephone ( $telephone ) {
		$this->telephone = addslashes( $telephone ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ telephone
 	* @access public
 	* @return String
 	*/
	 function getTelephone (){
	 	 return stripslashes( telephone);
	}


 	/**
 	* @desc Fonction mutatrice du champ age
 	* @access public
 	* @param intage
 	*/
	function setAge ( $age ) {
		$this->age = intval( $age );
	}


 	/**
 	* @desc Fonction accesseur du champ age
 	* @access public
 	* @return int
 	*/
	 function getAge (){
	 	 return stripslashes( age);
	}


 	/**
 	* @desc Fonction mutatrice du champ typeSkieur
 	* @access public
 	* @param inttypeSkieur
 	*/
	function setTypeSkieur ( $typeSkieur ) {
		$this->typeSkieur = intval( $typeSkieur );
	}


 	/**
 	* @desc Fonction accesseur du champ typeSkieur
 	* @access public
 	* @return int
 	*/
	 function getTypeSkieur (){
	 	 return stripslashes( typeSkieur);
	}


 	/**
 	* @desc Fonction mutatrice du champ date
 	* @access public
 	* @param mixeddate
 	*/
	function setDate ( $date ) {
		$this->date = addslashes( $date ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ date
 	* @access public
 	* @return mixed
 	*/
	 function getDate (){
	 	 return stripslashes( date);
	}


 	/**
 	* @desc Fonction mutatrice du champ access
 	* @access public
 	* @param intaccess
 	*/
	function setAccess ( $access ) {
		$this->access = intval( $access );
	}


 	/**
 	* @desc Fonction accesseur du champ access
 	* @access public
 	* @return int
 	*/
	 function getAccess (){
	 	 return stripslashes( access);
	}


 	/**
 	* @desc Fonction mutatrice du champ codeSecret
 	* @access public
 	* @param StringcodeSecret
 	*/
	function setCodeSecret ( $codeSecret ) {
		$this->codeSecret = addslashes( $codeSecret ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ codeSecret
 	* @access public
 	* @return String
 	*/
	 function getCodeSecret (){
	 	 return stripslashes( codeSecret);
	}


 	/**
 	* @desc Fonction mutatrice de la limite
 	* @access public
 	* @param string limite
 	*/
 	 function setLimite( $limite ) {  
 	 	 $this->limite =  $limite;  
 	 }  
 
   	/**
 	* @desc Fonction mutatrice de l'ordre
 	* @access public
 	* @param string ordre
 	*/
 	 function setOrdre( $ordre ) {  
 	 	 $this->ordre =  $ordre;  
 	 }  
 
   	/**
 	* @desc Fonction mutatrice de resultats
 	* @access public
 	* @return Array Resultats
 	*/
 	 function getResultats() {  
 	 	 return $this->resultats;  
 	 }  
 
   	/**
 	* @desc Fonction d'ajout et de mise à jour des données.
 	* @access public
 	* @return int
 	*/
	 function sauvegarde() { 
  		 if( empty( $this->noUsager ) ) { 
 			 $req = "INSERT INTO usagers ( nom, courriel, password, adresse, codePostal, telephone, age, typeSkieur, date, access, codeSecret 	)  VALUES  (  '" . $this->nom . "' ,  '" . $this->courriel . "' ,  '" . $this->password . "' ,  '" . $this->adresse . "' ,  '" . $this->codePostal . "' ,  '" . $this->telephone . "' , " . $this->age . ", " . $this->typeSkieur . ",  '" . $this->date . "' , " . $this->access . ",  '" . $this->codeSecret . "' ) ON DUPLICATE KEY UPDATE nom =  '" . $this->nom . "' , courriel =  '" . $this->courriel . "' , password =  '" . $this->password . "' , adresse =  '" . $this->adresse . "' , codePostal =  '" . $this->codePostal . "' , telephone =  '" . $this->telephone . "' , age = " . $this->age . ", typeSkieur = " . $this->typeSkieur . ", date =  '" . $this->date . "' , access = " . $this->access . ", codeSecret =  '" . $this->codeSecret . "' "; 
  			 $this->oBd->query( $req );
 			 $no = $this->oBd->getId(); 
 			 $this->noUsager = $no; 
 		 } else { 
 			 $req = "UPDATE usagers SET noUsager = " . $this->noUsager . ", nom =  '" . $this->nom . "' , courriel =  '" . $this->courriel . "' , password =  '" . $this->password . "' , adresse =  '" . $this->adresse . "' , codePostal =  '" . $this->codePostal . "' , telephone =  '" . $this->telephone . "' , age = " . $this->age . ", typeSkieur = " . $this->typeSkieur . ", date =  '" . $this->date . "' , access = " . $this->access . ", codeSecret =  '" . $this->codeSecret . "'  WHERE noUsager = " . $this->noUsager;
 			 $this->oBd->query( $req );
 			 $no = $this->noUsager;
 		 }
 		 return $no;  
 	 }  
  
  	/**
 	* @desc Fonction de recherche de données
 	* @access public
 	* @param string champs
 	*/
 	 function getInfos( $champs = "*" ) {
  		$variables = array( 'noUsager','nom','courriel','password','adresse','codePostal','telephone','age','typeSkieur','date','access','codeSecret'); 
  		 $trouve = false; 
 		 $recherche = ' 1 = 1 '; 
 		 $operateurDebut = " = '"; 
 		 $operateurFin = "'"; 
 		 if( !$this->rechercheExact ) {  
  			 $operateurDebut = " LIKE '%"; 
  			 $operateurFin = "%'"; 
  		 }  
  		 for ( $i = 0; $i < count( $variables ); $i++ ) { 
 			if ( !empty( $this->$variables[ $i ] ) ) {  
 				 $trouve = true; 
 				 /* Ajout de l'opérateur */ 
  				 if ( !empty( $recherche ) ) { 
 					 $recherche .= " AND "; 
 				 } 
  				 $variable = $variables[ $i ];
 				 $tableau = $this->$variable;
 				 $valeur = $tableau;
 				 /* Concaténation des critères de recherche */ 
  				 if ( is_numeric( $valeur ) ) { 
 					 $recherche .= "usagers." . $variables[ $i ] . " = " . $valeur. " "; 
 				 } else { 
 					 $recherche .= "usagers." . $variables[ $i ] . $operateurDebut . addslashes( $valeur ) . $operateurFin; 
 				 } 
  			 } 
  		 } 
  		 $infos = $this->oBd->query( "SELECT " . $champs . " FROM usagers WHERE " . $recherche . $this->ordre . $this->limite ); 
 		 $this->resultats = $infos;
 		 $this->cleanup();
 		 for ( $i = 0; $i < count( $infos ); $i++ ) { 
	 	 	$this->noUsager = $infos[ $i ][ 'noUsager'] ; 
	 	 	$this->nom = $infos[ $i ][ 'nom'] ; 
	 	 	$this->courriel = $infos[ $i ][ 'courriel'] ; 
	 	 	$this->password = $infos[ $i ][ 'password'] ; 
	 	 	$this->adresse = $infos[ $i ][ 'adresse'] ; 
	 	 	$this->codePostal = $infos[ $i ][ 'codePostal'] ; 
	 	 	$this->telephone = $infos[ $i ][ 'telephone'] ; 
	 	 	$this->age = $infos[ $i ][ 'age'] ; 
	 	 	$this->typeSkieur = $infos[ $i ][ 'typeSkieur'] ; 
	 	 	$this->date = $infos[ $i ][ 'date'] ; 
	 	 	$this->access = $infos[ $i ][ 'access'] ; 
	 	 	$this->codeSecret = $infos[ $i ][ 'codeSecret'] ; 
 		 } 
  	} 
  	/**
 	* @desc Fonction de suppression des données.
 	* @access public
 	*/
 	function delete() {
 		 $req = "DELETE FROM usagers WHERE noUsager = " . $this->noUsager; 
  		 $this->oBd->query( $req );
 	 } 

 	/**
 	* @desc Indique si la recherche dois etre exact ou pas ( true = LIKE '%x%' )" ),
 	* @access public
 	*/
 	 function setRechercheExact( $b ) {  
 	 	 $this->rechercheExact =  $b;  
 	 }  
 
   	/**
 	* @desc Fonction remet les variables membres à zéro
 	* @access private
 	*/
 	 function cleanup() { 
 	 	$this->noUsager = array(); 
  	 	$this->nom = array(); 
  	 	$this->courriel = array(); 
  	 	$this->password = array(); 
  	 	$this->adresse = array(); 
  	 	$this->codePostal = array(); 
  	 	$this->telephone = array(); 
  	 	$this->age = array(); 
  	 	$this->typeSkieur = array(); 
  	 	$this->date = array(); 
  	 	$this->access = array(); 
  	 	$this->codeSecret = array(); 
  	 }  
 
  }
?>